(function($){$.fn.extend({ajaxyLiveSearch:function(options,arg){if(options&&typeof(options)=='object'){options=$.extend({},$.ajaxyLiveSearch.defaults,options);}else{options=$.ajaxyLiveSearch.defaults;} if(this.is("input")){this.each(function(){new $.ajaxyLiveSearch.load(this,options,arg);});return;}}});$.ajaxyLiveSearch={element:null,timeout:null,options:null,load:function(elem,options,arg){this.element=elem;this.timeout=null;this.options=options;if($(elem).val()==""){$(elem).val(options.text);} $(elem).attr('autocomplete','off');if($('#sf_sb').length==0){$('body').append('');} $.ajaxyLiveSearch.loadEvents(this);},loadResults:function(object){options=object.options;elem=object.element;window.sf_lastElement=elem;if(jQuery(elem).val()!=""){jQuery("body").data("sf_results",null);var loading="
  • "+ ""+ ""+ "
  • ";jQuery("#sf_val").html("");var pos=this.bounds(elem,options);if(!pos){jQuery("#sf_sb").hide();return false;} if(Math.ceil(pos.left)+parseInt(options.width,10)>jQuery(window).width()){jQuery("#sf_sb").css('width',jQuery(window).width()-pos.left-20);} if(options.rtl==1){jQuery("#sf_sb").css({top:pos.bottom,left:pos.right});}else{jQuery("#sf_sb").css({top:pos.bottom,left:pos.left});} jQuery("#sf_sb").show();var data={action:"ajaxy_sf",sf_value:jQuery(elem).val(),search:options.search};if(options.ajaxData){data=window[options.ajaxData](data);} if(options.search){var mresults=options.search.split(',');var results=[];var m="";var s=0;var c=[];for(var kindex in mresults){var dm=mresults[kindex].split(":");if(dm.length==2){if(dm[1].indexOf(jQuery(elem).val())==0){results[results.length]=mresults[kindex];}}else if(dm.length==1){if(mresults[kindex].indexOf(jQuery(elem).val())==0){results[results.length]=mresults[kindex];}}} c=$.ajaxyLiveSearch.htmlArrayResults(results);m+=c[0];s+=c[1];var sf_selected="";if(s==0){sf_selected=" sf_selected";} m+="
  • {total} Results Found
  • ";m=m.replace(/{search_value_escaped}/g,jQuery(elem).val());m=m.replace(/{search_url_escaped}/g,options.searchUrl.replace('%s',encodeURI(jQuery(elem).val())));m=m.replace(/{search_value}/g,jQuery(elem).val());m=m.replace(/{total}/g,s);jQuery("body").data("sf_results",results);if(s>0){jQuery("#sf_val").html("");}else{jQuery("#sf_val").html("");} $.ajaxyLiveSearch.loadLiveEvents(object);jQuery("#sf_sb").show();}else{jQuery.post(options.ajaxUrl,data,function(resp){var results=eval("("+resp+")");var m="";var s=0;for(var mindex in results){var c=[];for(var kindex in results[mindex]){c=$.ajaxyLiveSearch.htmlResults(results[mindex][kindex],mindex,kindex);m+=c[0];s+=c[1];}} var sf_selected="";if(s==0){sf_selected=" sf_selected";} if(!options.callback){m+="
  • "+sf_templates+"
  • ";} var sval=jQuery('
    ').text(jQuery(elem).val()).html();m=m.replace(/{search_value_escaped}/g,sval);m=m.replace(/{search_url_escaped}/g,options.searchUrl.replace('%s',encodeURI(jQuery(elem).val())));m=m.replace(/{search_value}/g,sval);m=m.replace(/{total}/g,s);jQuery("body").data("sf_results",results);if(s>0){jQuery("#sf_val").html('');}else{jQuery("#sf_val").html('');} $.ajaxyLiveSearch.loadLiveEvents(object);jQuery("#sf_sb").show();});}}else{jQuery("#sf_sb").hide();}},bounds:function(elem,options){var offset=jQuery(elem).offset();if(offset){return{top:offset.top,left:offset.left+options.leftOffset,bottom:offset.top+jQuery(elem).innerHeight()+options.topOffset,right:offset.left-jQuery('#sf_sb').innerWidth()+jQuery(elem).innerWidth()};}},htmlResults:function(results,type,array_index){var m="";var s=0;if(typeof(results)!="undefined"){if(results.all.length>0){m+="
  • "+results.title+"
    • ";for(var i=0;i"+$.ajaxyLiveSearch.replaceResults(results.all[i],results.template)+"";} m+="
  • ";}} return new Array(m,s);},htmlArrayResults:function(results){var m="";var s=0;if(typeof(results)!="undefined"){if(results.length>0){m+="
  • ";}} return new Array(m,s);},replaceResults:function(results,template){for(var s in results){template=template.replace(new RegExp("{"+s+"}","g"),results[s]);} return template;},loadLiveEvents:function(object){var d={object:object};jQuery("#sf_val li.sf_lnk").mouseover(function(){jQuery(".sf_lnk").each(function(){jQuery(this).attr("class",jQuery(this).attr("class").replace(" sf_selected",""));});jQuery(this).attr("class",jQuery(this).attr("class")+" sf_selected");});if(d.object.options.callback){jQuery("#sf_val li.sf_lnk").click(function(event){try{window[d.object.options.callback](d.object,this);}catch(e){alert(e);} return false;});}},loadEvents:function(object){var d={object:object};jQuery(document).click(function(){jQuery("#sf_sb").hide();});jQuery(window).resize(function(){var pos=$.ajaxyLiveSearch.bounds(window.sf_lastElement,d.object.options);if(pos){jQuery("#sf_sb").css({top:pos.bottom,left:pos.left});}});jQuery(object.element).keyup(function(event){if(event.keyCode!="38"&&event.keyCode!="40"&&event.keyCode!="13"&&event.keyCode!="27"&&event.keyCode!="39"&&event.keyCode!="37"){var ajaxyObject=d.object;if(ajaxyObject.timeout!=null){clearTimeout(ajaxyObject.timeout);} jQuery(ajaxyObject.element).attr("class",jQuery(ajaxyObject.element).attr("class").replace(" sf_focused","")+" sf_focused");var l={object:d.object};ajaxyObject.timeout=setTimeout(function(){jQuery.ajaxyLiveSearch.loadResults(l.object);},d.object.options.delay);}});jQuery(window).keydown(function(event){if(jQuery("#sf_sb").css("display")!="none"&&jQuery("#sf_sb").css("display")!="undefined"&&jQuery("#sf_sb").length>0){if(event.keyCode=="38"||event.keyCode=="40"){if(jQuery.browser.webkit){jQuery("#sf_sb").focus();} var s_item=null;var after_s_item=null;var s_sel=false;var all_items=jQuery("#sf_val li.sf_lnk");var s_found=false;event.stopPropagation();event.preventDefault();for(var i=0;i=0&&s_found==false){s_sel=true;if(i0&&event.keyCode=="38"){jQuery(all_items[i]).attr("class",jQuery(all_items[i]).attr("class").replace(" sf_selected",""));jQuery(all_items[i-1]).attr("class",jQuery(all_items[i-1]).attr("class")+" sf_selected");i=i+1;s_found=true;}}else{jQuery(all_items[i]).attr("class",jQuery(all_items[i]).attr("class").replace(" sf_selected",""));}} if(s_sel==false){if(all_items.length>0){jQuery(all_items[0]).attr("class",jQuery(all_items[0]).attr("class")+" sf_selected");}}}else if(event.keyCode==27){jQuery("#sf_sb").hide();}else if(event.keyCode==13){var b=jQuery("#sf_val li.sf_selected a").attr("href");if(typeof(b)!='undefined'&&b!=''){if(d.object.options.callback){d.object.options.callback(this);}else{window.location.href=b;} return false;}else{if(d.object.options.callback){d.object.options.callback(this);}else if(d.object.element!=null){window.location.href=sf_url.replace('%s',encodeURI(jQuery(d.object).val()));} return false;}}}});jQuery(object.element).focus(function(){if(jQuery(this).val()==d.object.options.text){jQuery(this).val('');jQuery(this).attr('class',jQuery(this).attr('class')+' sf_focused');} if(d.object.options.expand>0){jQuery(d.object.element).animate({width:d.object.options.iwidth});}});jQuery(object.element).blur(function(){if(jQuery(this).val()==''){jQuery(this).val(d.object.options.text);jQuery(this).attr('class',jQuery(this).attr('class').replace(/ sf_focused/g,''));} if(d.object.options.expand>0){jQuery(d.object.element).animate({width:d.object.options.expand});}});}};$.ajaxyLiveSearch.defaults={delay:500,leftOffset:0,topOffset:5,text:"Search For",iwidth:180,width:315,ajaxUrl:"",ajaxData:false,searchUrl:"",expand:false,callback:false,rtl:true,search:false};})(jQuery);